/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.muni.service;

import cz.muni.dao.CourierDaoLocal;
import cz.muni.restinterface.CourierDTO;
import cz.muni.entities.Courier;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author OSiRiS-PC
 */
@Stateless
public class CourierService implements CourierServiceLocal {
    
    @EJB
    private CourierDaoLocal courierDao;

 
    @Override
    public void create(CourierDTO courierDTO) {
        Courier c = mapFromDTO(courierDTO);
        courierDao.create(c);
        courierDTO.setId(c.getId());
    }

    @Override
    public void delete(CourierDTO courierDTO) {
        courierDao.delete(this.mapFromDTO(courierDTO));
    }

    @Override
    public CourierDTO find(Long id) {
        Courier courier = courierDao.find(id);
        return mapToDTO(courier);
    }

    @Override
    public CourierDTO update(CourierDTO courierDTO) {
        Courier courier = mapFromDTO(courierDTO);
        Courier updated = courierDao.update(courier);
        return mapToDTO(updated);
    }

    @Override
    public List<CourierDTO> findAll() {
        
        List<CourierDTO> result = new ArrayList();
        List<Courier> courier = courierDao.findAll();
       
        for (int i = 0; i< courier.size(); i++) {
        
            result.add(mapToDTO(courier.get(i)));
        }
        
        return result;
    }

   /**
    * 
    * @param courier
    * @return 
    */
    
    private CourierDTO mapToDTO (Courier courier) {
        if (courier == null) {
            return null;
        }
        CourierDTO courierDTO = new CourierDTO();
        courierDTO.setId(courier.getId());
        courierDTO.setFirstName(courier.getFirstName());
        courierDTO.setLastName(courier.getLastName());
        courierDTO.setUserName(courier.getUserName());
        return courierDTO;
    }
    
    /**
     * 
     * @param courierDTO
     * @return 
     */
    private Courier mapFromDTO(CourierDTO courierDTO) {
        if (courierDTO == null) {
            return null;
        }
    
        Courier courier = new Courier();
        courier.setFirstName(courierDTO.getFirstName());
        courier.setId(courierDTO.getId());
        courier.setLastName(courierDTO.getLastName());
        courier.setUserName(courierDTO.getUserName());
    
        return courier;
    }
}
